Vlad,
With vector files you could easily parse them into line/arc/point segments and write gcode or feed directly to a coordmotion instance. I suppose you could assign depths for simple milling operations via coloring or layers if there is a layer mechanism available in your vector format. Otherwise you could manually set depths per image scan and build up complex parts with several files.
On rasters there are a few gotchas. I have built a point generator that takes a bitmap and processes depths based on pixel data much in the same way off the shelf artistic software works. You need to filter/normalize the image and then convert it to gray-scale. Then you define a min/max for Z and define a polarity vector(white is Z+ vs Z-). Load this data in a collection and then you can output linear paths in any direction you choose.
I think the raster stuff is best suited to artistic engraving/carving applications as it is hard to achieve the precision needed for utilitarian parts. You could add a "rules layer" on top of the raster interpreter that could recognize certain feature patterns and derive more accurate operations from the raw pixel data + rules.
I think a solid start to both of these scenarios could be realtively easy to acheive over a weekend or so using the Aforge.net imaging library and the Machine Manager framework.
Happy to help anyone interested in tackling this.
-Brad Murry